﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using WebserviceInvoker;
using MoiGioiHDBank.DTO;
using MoiGioiHDBank.DAO;

namespace MoiGioiHDBank
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btGui_Click(object sender, EventArgs e)
        {
            Users ur = Session["users"] as Users;
            if (ur == null)
            {
                Response.Redirect("TrangDangNhap.aspx");
            }
            else
            {
                ChuyenTien();
            }           
        }

        private void ChuyenTien()
        {
            string theGui = this.tbSoTheGui.Text;
            string theNhan = this.tbSoTheNhan.Text;
            int soTien = int.Parse(this.tbTongTien.Text);
            int kq = -7777;
            CardSystem.EMVServices cs = new CardSystem.EMVServices();
            string tenNganHangGui = cs.GetBankCommercialNameOfCreditCard(theGui);// sử dung ws của thẩy để lấy tên thẻ gửi
            LienKetNganHang moiGioiNhan = LienKetNganHangDAO.LayThongTinNganHangLienKet(tenNganHangGui);
            if (moiGioiNhan == null)
            {
                this.lbKetQua.Text = "không hỗ trợ ngân hàng này";
            }
            else// có liên kết với ngân hàng thẻ gửi
            {
                string tenNganHangNhan = cs.GetBankCommercialNameOfCreditCard(theNhan); // sử dung ws của thẩy để lấy tên thẻ nhận
                LienKetNganHang moiGioiGui = LienKetNganHangDAO.LayThongTinNganHangLienKet(tenNganHangNhan);
                if (moiGioiGui != null && moiGioiNhan.TenNganHang != moiGioiGui.TenNganHang)//có liên kết với ngân hàng thẻ nhận và khác ngân hàng
                {
                    int kq1 = ThucHienChuyenTien(theGui, moiGioiNhan.SoThe, soTien, moiGioiNhan.TenNganHang, moiGioiNhan.UserName, moiGioiNhan.Password);
                    if (kq1 > 0) // thẻ gửi chuyển cho môi giới thành công
                    {
                        int kq2 = ThucHienChuyenTien(moiGioiGui.SoThe, theNhan, soTien, moiGioiGui.TenNganHang, moiGioiGui.UserName, moiGioiGui.Password);
                        if (kq2 > 0) // môi giới chuyển cho thẻ nhận thành công
                        {
                            //báo thành công
                            kq = kq2;
                        }
                        else // môi giới không đủ tiền chuyển cho thẻ nhận
                        {
                            kq = ThucHienChuyenTien(moiGioiNhan.SoThe, theNhan, soTien, moiGioiNhan.TenNganHang, moiGioiNhan.UserName, moiGioiNhan.Password);
                        }
                    }
                    else // thẻ gửi chuyển cho môi giới KHÔNG thành công
                    {
                        // báo không thành công
                        kq = kq1;
                    }
                }
                else if (moiGioiGui != null && moiGioiNhan.TenNganHang == moiGioiGui.TenNganHang) //có liên kết và cùng ngân hàng
                {
                    kq = ThucHienChuyenTien(theGui, theNhan, soTien, moiGioiNhan.TenNganHang, moiGioiNhan.UserName, moiGioiNhan.Password);
                }
                else if (moiGioiGui == null) // môi giới không có liên kết với ngâng hàng thẻ nhận
                {
                    // để ngân hàng làm giùm
                    kq = ThucHienChuyenTien(theGui, theNhan, soTien, moiGioiNhan.TenNganHang, moiGioiNhan.UserName, moiGioiNhan.Password);
                }
                else
                {
                    // ngần hàng của môi giới này cũng làm không được
                }
            }
            this.lbKetQua.Text = kq.ToString();
        }

        //private int ThucHienChuyenTien(string theGui, string theNhan, int soTien, string tenNganHang, string userName, string password)
        //{
        //    int kq = 0;
        //    switch (tenNganHang)
        //    {
        //        case "HDB": // chua xet ten cua cardsystem tra ve
        //            WebService.HDBankWS bankService = new WebService.HDBankWS();
        //           // bankService.CookieContainer = new CookieContainer();
        //            bankService.Login(userName, password);
        //            kq = bankService.Tranfer(theGui, theNhan, soTien);
        //            break;
        //    }
        //    return kq;
        //}
        private int ThucHienChuyenTien(string theGui, string theNhan, int soTien, string tenNganHang, string userName, string password)
        {
            int kq = 0;
            LienKetNganHang moiGioi = LienKetNganHangDAO.LayThongTinNganHangLienKet(tenNganHang);
            kq = (int)WSProxy.CallWebService(moiGioi.URL, moiGioi.TenWebservice, "Login", new object[] {userName,password });
            if (kq == 1)
            {
                kq = (int)WSProxy.CallWebService(moiGioi.URL, moiGioi.TenWebservice, "Tranfer", new object[] { theGui, theNhan, soTien });
            }
            else
            {
                kq = -9999;
            }
            return kq;
        }
    }
}